本篇為觀看影片的統整 - 1
# print each
colors = ['red', 'green', 'blue']
example:
for i in range(colors):
print(color[i])
better solution:
for color in colors:
print(color)
# looping backwards
example:
for i in range(len(colors)-1, -1, -1):
print colors[i]
better solution:
for color reverse(colors)
print(color)
# looping with index
example:
for i in range(len(colors)):
print i, '--->', colors[i]
better solution:
for i, color in enumerate(colors):
print i, '--->', color
# looping over two collection
colors = ['red', 'green', 'blue']
name = ['raymond', 'rachal', 'matthew']
example:
n = min(len(names), len(colors))
for i in range(n):
print names[i], '--->' colors[i]
better solution:
for name, color in zip(names, colors):
print name '--->', color
# custom sort order
example:
def complare_length(c1, c2):
if len(c1) < len(c2): return -1
if len(c1) > len(c2): return 1
return 0
print(sort(colors, cmp=compare_length))
better solution:
print(sort(colors, key=len))
# call function until a sentinel value
blocks = []
example:
while True:
block = f.read(32)
if block == '':
break
blocks.append(block)
better solution:
## iter 可接收兩個參數,一個是被重複執行的函式,一個是終點的值 ##
for blocks in iter(partial(f.read, 32), ''):
blocks.append(block)
# 多跳出點 in for loop
example:
def find(seq, target):
found = False
for i, value in enumerate(seq):
if value == target:
found = True
break
if not found:
return -1
return i
better solution:
def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
return -1
return i
# Dictionary #
# looping over dictionary keys
d = {'aaa': 'green', 'bbb': 'blue', 'ccc': 'red'}
example:
for k in d.keys():
if k.startswith('a'):
del d[k]
better solution:
d = {k : d[k] for k in d if not k.startswith('a') }
# looping over dictionary keys and values
example:
for k in d:
print k, "--->", d[k]
better solution:
for k, v in d.items():
print k, "--->", v
# Constrct a dictionary from pair
names = ['aaa', 'bbb', 'ccc']
colors = ['green', 'blue', 'red']
k = dict(zip(names, colors))
# Counting with dictionaries
colors = ['green', 'blue', 'red', 'blue', 'green']
result = {'green': 2, 'blue': 2, 'red': 1}
example:
d = {}
for color in colors:
if color not in d:
d[color] = 0
d[color] += 1
better solution:
d = {}
for color in colors:
d[color] = d.get(color, 0) + 1